iT邦幫忙

2021 iThome 鐵人賽

DAY 2
2
自我挑戰組

.NET Core WebApi網頁應用開發系列 第 6

.Net Core Web Api_筆記06_HTTP資源操作模式Head

  • 分享至 

  • xImage
  •  

HttpHead操作是只會回傳Http Header部分資訊的api請求
所以不會返回函數回傳的主體本文
只會回傳Response Header區塊的內容

這裡我們一樣用前幾篇的專案
在TeacherController.cs
新增一個web api action並用 HttpHead屬性來註記

[HttpHead("head")]
public string HeaderMessage()
{
    return "test 123";//用HttpHead不會回傳此內容
}

新增一個HeaderTeacher.html來做client端呼叫測試

<!DOCTYPE html>
<html>
<head>
    <meta charset="utf-8" />
    <title>Header測試</title>
    <script src="jquery/jquery.min.js"></script>
</head>
<body>
    <div>
        <input type="button" id="btnHeader" value="get header info" />
        <span id="msg"></span>
    </div>

    <script type="text/javascript">
        $("#btnHeader").click(function () {
            $.ajax({
                //請求模式
                type: "head",
                //請求的URL
                url: "api/Teacher/head",                
                success: function (result,status,xhr) {
                    $("#msg").html(xhr.getAllResponseHeaders());
                }
            });
        });
    </script>
</body>
</html>

https://ithelp.ithome.com.tw/upload/images/20210906/201074523lQwfUiGFv.png

測試效果可見沒有回傳string要返回的內容
只有回傳response header資訊

比方開發框架、server名稱、版本
content-encoding: gzip
content-length: 126
content-type: text/plain;
charset=utf-8 date: Mon, 06 Sep 2021 05:37:08 GMT
server: Microsoft-IIS/10.0
vary: Accept-Encoding
x-powered-by: ASP.NET

因此通常會用void來定義
這裡改為void method再次測試

[HttpHead("head")]
public void HeaderMessage()
{
    //return "test 123";//用HttpHead不會回傳此內容
}

https://ithelp.ithome.com.tw/upload/images/20210906/20107452T9YhlRPeHO.png

這裡會發現
content-encoding 跟 content-length兩個內容消失了
主要是因為這兩個資料會根據api回傳值計算得來
這裡因為我們已經刪除掉改為void
因而不會有這兩個資料

以上是本次的分享
本文也已同步發表至個人部落格
https://coolmandiary.blogspot.com/2021/09/net-core-web-api06httphead.html


上一篇
.Net Core Web Api_筆記05_HTTP資源操作模式Delete
下一篇
.Net Core Web Api_筆記07_HTTP資源操作模式OPTIONS
系列文
.NET Core WebApi網頁應用開發25
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言